/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bw.gui;

import bw.owl.Ontology;
import bw.owl.Pracownik;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Set;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLIndividual;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import org.semanticweb.owlapi.model.OWLObjectProperty;

/**
 *
 * @author Agnieszka
 */
public class WnioskowaniePanel extends JPanel implements ActionListener {

    private InstanceViewer parent;
    private GroupLayout layout;
    private JButton wnioskuj;
    private JList listaPracownikow;

    public WnioskowaniePanel(InstanceViewer viewer) {
        parent = viewer;
        layout = new GroupLayout(this);
        setLayout(layout);

        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

        listaPracownikow = new JList();
        JScrollPane scrollPane = new JScrollPane(listaPracownikow);
        scrollPane.setMinimumSize(new Dimension(600, 100));


        wnioskuj = new JButton("Wnioskuj");
//        usun = new JButton("Usuń");
//        zmienNazwe = new JButton("Zmień nazwę");

        layout.setHorizontalGroup(
                layout.createParallelGroup().addComponent(scrollPane).addGroup(layout.createSequentialGroup().addComponent(wnioskuj) //                    .addComponent(usun)
                //                    .addComponent(zmienNazwe)
                ));

        layout.setVerticalGroup(
                layout.createSequentialGroup().addComponent(scrollPane).addGroup(layout.createParallelGroup().addComponent(wnioskuj) //                    .addComponent(usun)
                //                    .addComponent(zmienNazwe)
                ));

        wnioskuj.addActionListener(this);
//        usun.addActionListener(this);
//        zmienNazwe.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == wnioskuj) {
            if (listaPracownikow.isSelectionEmpty()) {
                komunikujBlad();
            } else {
                OWLObjectProperty maUmiejetnosc = Ontology.getFactory().getOWLObjectProperty(
                        IRI.create(Ontology.getOwlString()
                        + "#maUmiejetnosc"));

                OWLNamedIndividual pracownik = ((Pracownik)listaPracownikow.getSelectedValue()).getIndywidulum();
//                Set<OWLNamedIndividual> umiejetnosci = Ontology.getReasoner().getInstances(klasaUmiejetnosci, false).getFlattened();
                Set<OWLNamedIndividual> umiejetnosci = Ontology.getReasoner().getObjectPropertyValues(pracownik, maUmiejetnosc).getFlattened();


                StringBuilder tekstUmiejetnosci = new StringBuilder();

                for (OWLNamedIndividual ind : umiejetnosci) {
                    String zURLem = ind.toString();
                    String bezURLa = zURLem.substring(zURLem.indexOf('#') + 1, zURLem.length() - 1);

                    tekstUmiejetnosci.append(bezURLa + "\n");



                }
                JOptionPane.showMessageDialog(this,
                        tekstUmiejetnosci.toString(),
                        "Umiejetnosci tego pracownika", JOptionPane.PLAIN_MESSAGE);
            }
        }
    }

    private void komunikujBlad() {
        JOptionPane.showMessageDialog(this,
                "Musisz zaznaczyć jednego pracownika!",
                "Zaznacz pracownika",
                JOptionPane.WARNING_MESSAGE);
    }

    public void setPracownicy(ArrayList<Pracownik> pracownicy2) {
        listaPracownikow.setListData(pracownicy2.toArray());
    }
}
